package com.dys.testjdk14;

import java.util.Date;
import java.util.Objects;

/**
 * @className: com.dys.testjdk14.InstanceofTest
 * @description: instanceof关键字，判断某一个对象是否属于某一个类
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/09/08 下午10:21
 */
public class InstanceofTest {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        testInstanceOf();
    }

    /**
     * 模式匹配预览
     */
    private static void testInstanceOf() {
        // Object obj1 = "字符串";
        Object obj1 = new Date();
        if (obj1 instanceof String str) {
            System.out.println(str.length());
        } else {
            System.out.println("不是一个字符串");
        }

        Object obj2 = "字符串";
        if (obj2 instanceof String str && str.length() > 2) {
            System.out.println(str);
        } else {
            System.out.println("非字符串");
        }
    }
}

class Person {
    private String name;
    private int age;

    @Override
    public boolean equals(Object o) {
        return o instanceof Person person && age == person.age && Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}
